/* 对数字求和到给定值

编写一个函数 sumTo(n) 计算 1 + 2 + ... + n 的和。

举个例子：

sumTo(1) = 1
sumTo(2) = 2 + 1 = 3
sumTo(3) = 3 + 2 + 1 = 6
sumTo(4) = 4 + 3 + 2 + 1 = 10
...
sumTo(100) = 100 + 99 + ... + 2 + 1 = 5050
用三种方式实现：

使用循环。
使用递归，对 n > 1 执行 sumTo(n) = n + sumTo(n-1)。
使用 等差数列 求和公式。

P.S. 哪种解决方式最快？哪种最慢？为什么？

P.S. 我们可以使用递归来计算 sumTo(100000) 吗？ */

// 使用 等差数列 求和公式
function sumTo(n) {
  return ((1 + n) * n) / 2;
}

// 使用循环
/* function sumTo(n) {
  let sum = 0;
  for (let i = 1; i != n + 1; i++) {
    sum += i;
  }
  return sum;
} */

// 使用递归
/* function sumTo(n) {
  if (n == 1) {
    return n;
  } else {
    return n + sumTo(n - 1);
  }
} */

console.log(sumTo(100)); // 5050
